﻿using System;
using System.Xml;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using Microsoft.Ink;

namespace Modele
{
    class reader1
    {

        static void lireUPX(String url)
        {

            // Create an isntance of XmlTextReader and call Read method to read the file
            //TODO ouvrir le bon fichier, voir fenêtre de sélection + appeller automatiquement le bon

            XmlTextReader textReader = new XmlTextReader("C:\\Documents and Settings\\evy\\Mes documents\\Visual Studio 2008\\Projects\\PANessai1\\PANessai1\\testLecture1.xml");

            textReader.Read();

            //création d'une nouvelle instance de projet
            ProjetBlocNote nouvProjet = new ProjetBlocNote(url);
            //TODO crée le projet avec l'url de l'image de l'archive


            // If the node has value

            while (textReader.Read())
            {

                // Move to first element

                textReader.MoveToElement();

                // nom du noeud
                string name = textReader.Name; //nom du noeud courant
                int indiceCalqueCourant = 0; //le numéro du calque courant
                int indiceCoucheCourante = 0; // le numéro de la couche courante

                if (name.Equals("nbPages")) // le nombre de pages du projet
                {
                    textReader.MoveToAttribute("nb");
                    int n = Convert.ToInt32(textReader.Value);
                    textReader.MoveToElement();
                    nouvProjet.setNbPages(n);
                }

                if (name.Equals("couche"))
                {
                    textReader.MoveToAttribute("idcouche");
                    indiceCoucheCourante = Convert.ToInt32(textReader.Value);
                    textReader.MoveToElement();

                    textReader.MoveToAttribute("visibiliteCouche");
                    string visib = textReader.Value;
                    textReader.MoveToElement();
                    if (visib.Equals("non"))//visibilité à vrai par défaut donc traitement que si non visible
                    {
                        nouvProjet.accesCoucheInd(indiceCoucheCourante).changerVisibilite();
                    }

                    if (name.Equals("calque"))
                    {
                        nouvProjet.ajouterCalque();
                        textReader.MoveToAttribute("idcalque");
                        indiceCalqueCourant = Convert.ToInt32(textReader.Value);
                        textReader.MoveToElement();
                    }

                    //TODO traitement pour les formes
                    if (name.Equals("forme"))
                    {

                    }

                    //TODO traitement pour les annotations normales

                    //voir par rapport à l'association avec l'image
                    if (name.Equals("balise"))
                    {
                        textReader.Read();
                        name = textReader.Name;

                        int x = 0;
                        int y = 0;

                        if (name.Equals("position"))
                        {
                            textReader.MoveToAttribute("positionX");
                            x = Convert.ToInt32(textReader.Value);
                            textReader.MoveToElement();
                            textReader.MoveToAttribute("positionY");
                            y = Convert.ToInt32(textReader.Value);
                            textReader.MoveToElement();
                        }

                        textReader.Read(); //noeud label
                        name = textReader.Name;
                        if (name.Equals("label"))
                        {
                            textReader.Read(); // noeud alternate
                            name = textReader.Name;

                            string sem = "";
                            if (name.Equals("alternate"))
                            {
                                sem = textReader.Value.ToString();
                            }


                            Position p = new Position(x, y);
                            Semantique s = new Semantique(sem);
                            AnnotationPAN ann = new AnnotationPAN(p, s);
                            //TODO créer la balise et l'ajouter au calque(voir pour acceder au calque)
                        }
                    }

                    if (name.Equals("texte"))
                    {
                        textReader.Read();
                        name = textReader.Name;

                        int x = 0;
                        int y = 0;

                        if (textReader.Name.Equals("position"))
                        {
                            textReader.MoveToAttribute("positionX");
                            x = Convert.ToInt32(textReader.Value);
                            textReader.MoveToElement();
                            textReader.MoveToAttribute("positionY");
                            y = Convert.ToInt32(textReader.Value);
                            textReader.MoveToElement();
                        }

                        //TODO voir pour ajouter attribut texte à l'objet TextePAN

                        textReader.Read(); //noeud label
                        name = textReader.Name;
                        if (name.Equals("label"))
                        {
                            textReader.Read(); // noeud alternate
                            name = textReader.Name;

                            string sem = "";
                            if (name.Equals("alternate"))
                            {
                                sem = textReader.Value.ToString();
                            }


                            Position p = new Position(x, y);
                            Semantique s = new Semantique(sem);
                            AnnotationPAN ann = new AnnotationPAN(p, s);
                            //TODO créer le texte et l'ajouter au calque(voir pour acceder au calque)
                        }
                    }
                }
            }
        }
    }
}



                    //consignes générales pour écrire des xml (à supprimer une fois fini)

                    // si nombre d'attribut dans le noeud différent de 0

                    /*   if (textReader.HasAttributes)
                       {
                           for (int i = 0; i < textReader.AttributeCount; i++)
                           {
                               textReader.MoveToAttribute(i);
                               Console.WriteLine(" " + textReader.Name + "=" + textReader.Value.ToString());
                           }
                           textReader.MoveToElement(); // Moves the reader back to the element node.
                       }


                       //pour les noeuds alternate
                       Console.WriteLine("Value:" + textReader.Value.ToString()); //valeur entre balise ouvrante et fermante

                       //accès à un attribut particulier d'un noeud
                       if (textReader.HasAttributes)
                       {
                           Console.WriteLine("Attribute id of <" + textReader.Name + ">");
                           textReader.MoveToAttribute("id");
                           Console.WriteLine("id:" + textReader.Value.ToString());
                           textReader.MoveToElement();
                       }

                       //parcours de tous les attributs du noeud
                       if (textReader.HasAttributes)
                       {
                           Console.WriteLine("Attributes of <" + textReader.Name + ">");
                           for (int i = 0; i < textReader.AttributeCount; i++)
                           {
                               textReader.MoveToAttribute(i);
                               Console.WriteLine(" " + textReader.Name + "=" + textReader.Value.ToString());
                           }
                           textReader.MoveToElement(); // Moves the reader back to the element node.
                       }
                   }
                   Console.ReadLine();
               }*/
